﻿using System;
using System.Net;
using System.Runtime.Serialization;
using System.Windows;
using System.Windows.Controls;

namespace DiscoveryLogic.DataServices.DataObjects.Entities
{
    public enum USRegion
    {
        FarWest,
        GreatLakes,
        MidEast,
        NewEngland,
        OutlyingAreas,
        Plains,
        RockyMountains,
        Southeast,
        Southwest
    }

    [DataContract(Namespace=Settings.DataObjectNamespace)]
    public class Organization:Entity
    {
        #region props
        private string _OrgID;
        /// <summary></summary>
        [DataMember]
        public string OrgID
        {
            get
            {
                return this._OrgID;
            }
            set
            {
                if (this._OrgID != value)
                {
                    this._OrgID = value;
                    this.OnPropertyChanged("OrgID");
                }
            }
        }

        private string _OrgName;
        /// <summary></summary>
        [DataMember]
        public string OrgName
        {
            get
            {
                return this._OrgName;
            }
            set
            {
                if (this._OrgName != value)
                {
                    this._OrgName = value;
                    this.OnPropertyChanged("OrgName");
                }
            }
        }

        private string _Division;
        /// <summary></summary>
        [DataMember]
        public string Division
        {
            get
            {
                return this._Division;
            }
            set
            {
                if (this._Division != value)
                {
                    this._Division = value;
                    this.OnPropertyChanged("Division");
                }
            }
        }

        private string _City;
        /// <summary></summary>
        [DataMember]
        public string City
        {
            get
            {
                return this._City;
            }
            set
            {
                if (this._City != value)
                {
                    this._City = value;
                    this.OnPropertyChanged("City");
                }
            }
        }

        private string _State;
        /// <summary></summary>
        [DataMember]
        public string State
        {
            get
            {
                return this._State;
            }
            set
            {
                if (this._State != value)
                {
                    this._State = value;
                    this.OnPropertyChanged("State");
                }
            }
        }

        private USRegion _Region;
        /// <summary></summary>
        [DataMember]
        public USRegion Region
        {
            get
            {
                return this._Region;
            }
            set
            {
                if (this._Region != value)
                {
                    this._Region = value;
                    this.OnPropertyChanged("Region");
                }
            }
        }

        private string _Country;
        /// <summary></summary>
        [DataMember]
        public string Country
        {
            get
            {
                return this._Country;
            }
            set
            {
                if (this._Country != value)
                {
                    this._Country = value;
                    this.OnPropertyChanged("Country");
                }
            }
        }

        private string _PostalCode;
        /// <summary></summary>
        [DataMember]
        public string PostalCode
        {
            get
            {
                return this._PostalCode;
            }
            set
            {
                if (this._PostalCode != value)
                {
                    this._PostalCode = value;
                    this.OnPropertyChanged("PostalCode");
                }
            }
        }

        private string _EIN;
        /// <summary></summary>
        [DataMember]
        public string EIN
        {
            get
            {
                return this._EIN;
            }
            set
            {
                if (this._EIN != value)
                {
                    this._EIN = value;
                    this.OnPropertyChanged("EIN");
                }
            }
        }

        private string _DunsID;
        /// <summary></summary>
        [DataMember]
        public string DunsID
        {
            get
            {
                return this._DunsID;
            }
            set
            {
                if (this._DunsID != value)
                {
                    this._DunsID = value;
                    this.OnPropertyChanged("DunsID");
                }
            }
        }
        #endregion

        public Organization(Guid mentityId, EntityType mentityType, string mdomain) : base(mentityId, mentityType, mdomain)
        {
        }
    }
}
